import type { IPluginContext } from '@tarojs/service'

/**
 * 命令行扩展
 */
export default (ctx: IPluginContext) => {
  ctx.registerCommand({
    // 命令名
    name: 'custom-init',
    optionsMap: {
      '--name': '项目名称',
      '--description': '项目描述',
    },
    // 执行 taro custom-init --help 时输出的使用例子的信息
    synopsisList: ['taro custom-init <projectName> --description <description>'],
    // 命令钩子
    async fn() {
      const name = ctx?.runOpts?._[1] || ctx?._.name
      const description = ctx?.runOpts?.options?.description
      //使用 taro cli 内部命令插件已通过此方法暴露出来
      ctx.applyCliCommandPlugin(['init'])
      ctx.applyPlugins({
        name: 'init',
        opts: {
          options: {
            typescript: true,
            templateSource: 'default-template',
            css: 'none',
            framework: 'react',
            compiler: 'webpack5',
            description: description,
            projectName: name,
          },
        },
      })
    },
  })
}